<?xml version="1.0" encoding="UTF-8"?>
<sect1 id="ch04-2">
	<title>文字菜单的制作</title>
	<para>本节主要研究利用KAG指令制作简单菜单的方法。</para>
	<sect2 id="ch04-2-1">
		<title>locate、nowait与s指令</title>
		<para>locate指令可以把文字层定位到层上的任何位置。配合KAGeXpress预设的menul文字层，对于制作简单的文字菜单非常合适。</para>
		<para>locate指令主要有x、y两个属性。在menul模式下，locate属性之后的剧本文字将以locate指令指定的位置为起点描绘。</para>
		<para>描绘菜单的文字一般不需要像剧本文字一样一个个显示，所以，这个时候可以使用nowait指令。</para>
		<para>在nowait与endnowait两个指令之间，所有的文字描绘都将是瞬时的。但是，请不要忘记在菜单命令的结尾加上endnowait。</para>
		<para>菜单描绘之后，如果需要系统停止执行剧本，等待菜单中的某一项被选中，则可以使用s命令。</para>
	</sect2>
	<sect2 id="ch04-2-2">
		<title>简单的菜单制作</title>
		<para>利用menul、link、locate、s和nowait命令，我们可以制作简单的菜单。</para>
		<para>在开始描绘菜单之前，可以先用bg等命令，描绘出菜单的背景图。</para>
		<para>首先，利用menul，将文字层设置为全屏。这样方便我们定位。然后，使用nowait命令，进入文字瞬间描绘模式。</para>
		<para>然后，使用locate定位每一个菜单项的位置。使用link和endlink指定菜单项被选中后的操作，然后利用剧本文字写出菜单项的内容。</para>
		<para>在完成菜单描绘之后，使用endnowait命令结束瞬间描绘模式，以免对之后的剧本执行造成影响，然后使用s命令等待选择。</para>
		<example id="ex4-2-1">
			<title>简单的菜单描绘（来自KAGeXpress自带样例“超分支样例”）</title>
			<programlisting>
*menu
@bg storage=menu time=2000
@wait time=100
@font size=32
@nowait
@locate x=120 y=180
@link storage=script.ks target=*start
新游戏
@endlink
@locate x=120 y=250
@link exp="kag.close()"
结束游戏
@endlink
@resetfont
@endnowait
@s
			</programlisting>
			<para>本例的效果可以参见KAGeXpress自带样例。</para>
		</example>
		<tip>
			<para>出于结构的考虑，我们建议不要把标题菜单等内容与剧本放在同一个剧本文件中。例如上例中可以看出，剧本内容就内容放在了script.ks中。</para>
		</tip>
	</sect2>
</sect1>